package com.awaken.content.models.entity;

// 导入MyBatis Plus的注解，用于数据库操作
import com.baomidou.mybatisplus.annotation.*;
// 导入Lombok注解，自动生成getter、setter等方法
import lombok.Data;
// 导入精确的十进制数类型，用于价格计算
import java.math.BigDecimal;
// 导入时间类
import java.time.LocalDateTime;

/**
 * 订单实体类 - 对应数据库中的order_info表
 * 这个类定义了订单的所有属性，比如买家、商品、数量、总价等
 */
@Data  // Lombok注解：自动生成getter、setter、toString等方法
@TableName("order_info")  // MyBatis Plus注解：指定对应的数据库表名
public class OrderInfo {
    
    // 订单ID，主键，自动增长
    @TableId(type = IdType.AUTO)  // 指定ID类型为自动增长
    private Long id;
    
    // 买家用户ID，关联到user表（逻辑外键）
    private Long userId;
    
    // 商品ID，关联到product表（逻辑外键）
    private Long productId;
    
    // 购买数量
    private Integer amount;
    
    // 订单总价 = 商品单价 × 购买数量
    private BigDecimal totalPrice;
    
    // 订单状态：1=待付款，2=已付款待发货，3=已发货待收货，4=已完成，5=已取消
    private Integer status;
    
    // 创建时间，插入数据时自动填充当前时间
    @TableField(fill = FieldFill.INSERT)  // 插入时自动填充
    private LocalDateTime createTime;
    
    // 更新时间，插入和更新时自动填充当前时间
    @TableField(fill = FieldFill.INSERT_UPDATE)  // 插入和更新时都自动填充
    private LocalDateTime updateTime;
} 